Computer Science

Search Criteria

Introduction to Programming

Programming courses almost always use the study of one language in depth to help students understand the basic principles of computer science, however this course will explore a number of different programming languages - while still giving students a grounding in many of those same computer science principles. The course will start with a brief history of computer programming leading up to the evolution of the technology-rich world that we live in today. Students will strengthen and demonstrate their learning through the creation of individual and collaborative projects.

  • Credits: Full Credit
  • Open To: I, II, III, IV
  • School Level: Upper School
  • Term Offered: Fall or Spring


Advanced Placement (AP) Computer Science Principles

Most people don’t understand what happens ‘under the hood’ of our ever-present digital devices, such as how algorithms shape our interactions in the world and how abstractions hide increasing complexity. This course aims to broaden exposure to the growing field of computer science by covering topics like how data is used, how the internet works, cybersecurity, and the global impact and social implications of emerging technologies. The curriculum includes paired programming activities that require problem analysis and solution design. This is not a traditional programming course, though we use a visual programming language that has a low barrier to entry.

  • Credits: Full Credit
  • Open To: I, II, III, IV
  • School Level: Upper School


Artificial Intelligence

Artificial intelligence (AI) is permeating all aspects of modern life. It will continue to rapidly transform society and evolve the way we learn, work, and play–how we live. Think self-driving cars, image recognition, Face ID, Siri and Alexa, Chat-GTP, Spotify’s Discover Weekly, and pretty soon… everything else! This course will help build a foundational knowledge of this transformative technology. We will use the Python programming language to delve into the concepts and algorithms undergirding the artificially intelligent technologies that are changing the world. Through hands-on experience in this project-based course, students will gain exposure to the fundamental concepts of artificial intelligence and machine learning (ML), including neural nets, graph search algorithms, linear regressions, classification, optimization, and much more! We will also cover Python fundamentals and use the projects as conduits for honing skills with this versatile and powerful programming language wholly adopted by AI/ML world and computer scientists in every domain. After this course, students will emerge with conceptual knowledge of artificial intelligence principles and practical skills to implement their own artificially intelligent systems.

  • Credits: Full Credit
  • Open To: I, II, III
  • Prerequisites: AP Computer Programming (Java) or permission of the department
  • School Level: Upper School


AP Computer Programming (Java)

This course is intended to prepare students for the A-level AP Exam in Computer Science, currently given in the Java programming language. This course presents a project-based approach to learning object-oriented programming. By working in collaborative groups, students will experience the process of defining a problem, breaking it up into manageable sections, and designing compact, portable code that will solve the problem in a structured and efficient manner. Topics covered will include object-oriented software design and programming, how to code using good style and documentation, the implementation of algorithms using conditional statements and loops, common searching and sorting algorithms, and Java library packages and classes within the scope of the AP Computer Science A subset. More generally, students will garner robust foundational knowledge of software design and practical programming skills and experience.

  • Credits: Full Credit
  • Open To: I, II, III
  • Prerequisites: Intro to Programming
  • School Level: Upper School


Tech Ethics

WHY?
Despite what we hear from popular culture, technology will neither save us nor lead to the demise of humanity. However, technology is changing radically, and it’s changing us. It is becoming increasingly apparent that we must understand how these emerging technologies impact our lives for better or worse. Ultimately, technology is a powerful force and potential disruptor of every aspect of our lives with huge ethical implications.

HOW?
Biased bots and altruistic algorithms? Through case studies, guest speakers, discussion and debate, and hands-on exploration of emerging technologies, this class will examine the ethics of technology’s transformative powers through contemporary and historical perspectives.

Themes covered: may include, but are not limited to:
Algorithmic Bias
Digital Divide
Gender Equity in Technology
Misinformation in the Digital Age
Privacy and Data Protection
Robots and Work
Social Media and Mental Health
Transparent AI

WHO?
This new class is for programmers and non-programmers, students of history and philosophy, futurists, and those interested in making the world a better place. All upper school grade levels are welcome!

  • Credits: Full Credit
  • Open To: I, II, III, IV
  • School Level: Upper School
  • Term Offered: Fall or Spring


Robotics

The goal of this course is to teach students how to think and create like engineers. We begin the term by studying how to analyze problems in a logical manner and create algorithms that can solve these problems, including computer programming techniques in C++. Building upon this abstract foundation, students learn how to apply this mode of thinking to concrete situations involving circuits and sensors. The culminating project, a competition against other students in the class, places the student in the role of lead engineer. Students come up with ideas, develop algorithms, test their ideas, and execute their designs. Through extensive laboratory work, students utilize their computer-programming techniques and an understanding of electronic circuits to implement their engineering projects. ** Credits will be given as a Science course.**

  • Credits: Full Credit
  • Open To: I, II, III, IV
  • School Level: Upper School
  • Term Offered: Fall or Spring


Advanced Projects in Robotics

Course Description:

Advanced Projects in Robotics is acourse designed to take students on an immersive journey into the world of robotics and mechanical engineering. Building upon the foundational knowledge gained in the Robotics introductory course, this course is structured to provide students with a deeper understanding of robotics systems and integrate fundamental mechanical engineering concepts. A key focus of this course is hands-on experience and the utilization of the CAD design software, OnShape, to bring theoretical concepts to life through digital and physical creations.

Key Learning Objectives: 1. Advanced Robotics Concepts: Delve into higher-level robotics principles, including advanced programming, sensor integration, and complex automation. Students will develop a profound understanding of robotics architectures and explore applications in various fields.

2. CAD Design with OnShape: Gain proficiency in using OnShape, a powerful cloud-based Computer-Aided Design (CAD) software. Students will learn to model intricate robotic components and assemblies, fostering a seamless transition from digital design to physical prototyping.

  • Credits: Full Credit
  • Open To: I, II, III, IV
  • School Level: Upper School
  • Term Offered: Fall or Spring


Electronics Design and Engineering

The Electronics Design and Engineering course is the next step in the engineering and design pathway. This project based course will see each student begin to further develop the concepts and skills needed to continue their computer science journey. The course will focus on flourishing technologies, such as computer-aided design(CAD), 3D modeling and printing, 3D accelerometers and sensors to design and create sophisticated solutions to real world problems. In this engaging and hands-on course, students will design, test, prototype and ultimately manufacture a finished product at the conclusion of the course. This course is especially suited for students interested in engineering who have already taken Robotics or have prior programming experience. Through a number of projects, students will expand their existing skills in computer design, programming, embedded chip analysis and coding, and the engineering design process. ** Credits will be given as a Science course.**

  • Credits: Full Credit
  • Open To: I, II, III
  • Prerequisites: Advanced Projects in Robotics or permission of department
  • School Level: Upper School
  • Term Offered: Spring Only